Встроенные функции и стандартная библиотека
Встроенные функции и стандартная библиотека
Rust предоставляет набор встроенных макросов и функций стандартной библиотеки, доступных без дополнительных импортов в большинстве контекстов. Эти инструменты образуют основу повседневной разработки.
Встроенные макросы
| Макрос | Назначение | Пример |
|---|---|---|
println! | Вывод текста в стандартный поток вывода с переводом строки | |
print! | Вывод текста в стандартный поток вывода без перевода строки | |
eprintln! | Вывод текста в стандартный поток ошибок с переводом строки | |
eprint! | Вывод текста в стандартный поток ошибок без перевода строки | |
format! | Форматирование строки без вывода, возвращает String | |
panic! | Немедленное прерывание выполнения программы с сообщением | |
vec! | Создание вектора с заданными элементами | |
dbg! | Отладочная печать значения с указанием файла и строки | |
todo! | Заглушка для нереализованного функционала, вызывает панику | |
unimplemented! | Заглушка для нереализованного метода, вызывает панику | |
assert! | Проверка условия в режиме отладки, паника при ложном результате | |
assert_eq! | Проверка равенства двух значений с детальным сообщением | |
assert_ne! | Проверка неравенства двух значений | |
debug_assert! | Проверка условия только в режиме отладки (оптимизируется в релизе) | |
debug_assert_eq! | Проверка равенства только в режиме отладки | |
debug_assert_ne! | Проверка неравенства только в режиме отладки | |
write! | Запись отформатированного текста в реализацию std::fmt::Write | |
writeln! | Запись отформатированного текста с переводом строки | |
concat! | Объединение строковых литералов на этапе компиляции | |
env! | Получение значения переменной окружения на этапе компиляции | |
option_env! | Безопасное получение переменной окружения, возвращает Option | |
include_str! | Встраивание содержимого файла как строкового литерала | |
include_bytes! | Встраивание содержимого файла как байтового массива | |
line! | Получение номера текущей строки на этапе компиляции | |
file! | Получение имени текущего файла на этапе компиляции | |
column! | Получение номера текущей колонки на этапе компиляции | |
stringify! | Преобразование токена в строковый литерал на этапе компиляции | |
module_path! | Получение полного пути к текущему модулю |
Функции стандартной библиотеки высокой частоты использования
| Функция | Назначение |
|---|---|
std::process::exit | Завершение процесса с указанным кодом возврата |
std::mem::drop | Явное освобождение владения значением |
std::mem::size_of | Получение размера типа в байтах на этапе компиляции |
std::mem::size_of_val | Получение размера значения в байтах во время выполнения |
std::mem::take | Замена значения по изменяемой ссылке на значение по умолчанию с возвратом старого |
std::mem::replace | Замена значения по изменяемой ссылке с возвратом старого |
std::ptr::null | Создание нулевого указателя для любого типа |
std::ptr::null_mut | Создание нулевого изменяемого указателя |
std::env::args | Получение аргументов командной строки как итератора |
std::env::var | Получение значения переменной окружения |
std::fs::read | Чтение всего содержимого файла в вектор байт |
std::fs::write | Запись данных в файл |
std::thread::sleep | Приостановка выполнения потока на заданную длительность |
std::thread::spawn | Создание нового потока выполнения |
std::time::Instant::now | Получение текущей точки во времени для замеров |
Методы-помощники для стандартных типов
| Метод | Назначение |
|---|---|
is_empty | Проверка коллекции на отсутствие элементов |
len | Получение количества элементов в коллекции |
unwrap | Извлечение значения из Option или Result, паника при ошибке |
expect | Извлечение значения с пользовательским сообщением паники |
unwrap_or | Извлечение значения или возврат значения по умолчанию |
unwrap_or_else | Извлечение значения или вычисление значения по умолчанию |
map | Преобразование значения внутри Option или Result |
and_then | Цепочка операций, возвращающих Option или Result |
as_ref | Преобразование Option<T> в Option<&T> без перемещения |
as_mut | Преобразование Option<T> в Option<&mut T> |
Функции для работы с памятью и указателями
| Функция | Назначение |
|---|---|
std::alloc::alloc | Выделение сырой памяти через системный аллокатор |
std::alloc::dealloc | Освобождение сырой памяти |
std::ptr::read | Безопасное чтение значения по указателю без перемещения |
std::ptr::write | Запись значения по указателю без дропа предыдущего |
std::ptr::copy | Копирование памяти с перекрытием областей |
std::ptr::copy_nonoverlapping | Копирование памяти без перекрытия |
Box::new | Выделение значения в куче с автоматическим освобождением |
Box::into_raw | Преобразование Box в сырой указатель |
Box::from_raw | Восстановление Box из сырого указателя |
Функции для работы с файловой системой
| Функция | Назначение |
|---|---|
std::fs::read | Чтение всего содержимого файла в Vec<u8> |
std::fs::read_to_string | Чтение текстового файла в String |
std::fs::write | Запись данных в файл, перезаписывая существующий |
std::fs::create_dir | Создание директории |
std::fs::create_dir_all | Рекурсивное создание директории со всеми родителями |
std::fs::remove_file | Удаление файла |
std::fs::remove_dir | Удаление пустой директории |
std::fs::remove_dir_all | Рекурсивное удаление директории со всем содержимым |
std::fs::metadata | Получение метаданных файла или директории |
std::fs::canonicalize | Получение абсолютного пути с разрешением символических ссылок |
Функции для работы с сетью
| Функция | Назначение |
|---|---|
std::net::TcpStream::connect | Установка TCP-соединения к удалённому хосту |
std::net::TcpListener::bind | Привязка TCP-сервера к локальному адресу |
std::net::UdpSocket::bind | Привязка UDP-сокета к адресу |
std::net::IpAddr::from | Создание IP-адреса из различных представлений |
std::net::SocketAddr::new | Создание сокетного адреса из IP и порта |
Функции для работы со временем
| Функция | Назначение |
|---|---|
std::time::Instant::now | Получение текущей точки времени для замеров производительности |
std::time::SystemTime::now | Получение системного времени в формате UNIX |
std::time::Duration::from_secs | Создание длительности из секунд |
std::time::Duration::from_millis | Создание длительности из миллисекунд |
std::time::Duration::from_micros | Создание длительности из микросекунд |
std::time::Duration::from_nanos | Создание длительности из наносекунд |
Макросы для тестирования и атрибуты
| Макрос / Атрибут | Назначение |
|---|---|
#[test] | Пометка функции как теста для cargo test |
#[should_panic] | Ожидание паники при выполнении теста |
#[ignore] | Пропуск теста при обычном запуске |
compile_error! | Генерация ошибки компиляции с сообщением |
unreachable! | Указание недостижимого кода, вызывает панику при выполнении |
Функции для работы с итераторами и коллекциями
| Функция / Метод | Назначение |
|---|---|
collect | Сбор элементов итератора в коллекцию |
map | Преобразование каждого элемента итератора |
filter | Отбор элементов по предикату |
fold | Свёртка итератора в одно значение |
zip | Объединение двух итераторов в пары |
enumerate | Добавление индекса к каждому элементу |
chain | Последовательное объединение двух итераторов |
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Инициатором проекта стал Graydon Hoare, тогда — независимый исследователь и разработчик, работавший в Mozilla с 2006 года. До этого он участвовал в разработке компиляторов и языковых инструментов,… Фундамент для начинающего программиста - что повторить, как работать, чего ожидать. Набор советов, правил, принципов и обычаев в разработке на этом языке. Черты могут иметь методы по умолчанию. Если тип не переопределяет метод, используется версия из черты. Это позволяет расширять функциональность без изменения базового кода. fn - ключевое слово, которое обозначает начало объявления функции. Функция представляет собой именованный блок кода, выполняющий конкретную задачу. В данном случае функция называется main. Rust — это язык системного программирования, сочетающий безопасность памяти, высокую производительность и выразительность. Его экосистема охватывает широкий спектр областей — от встраиваемых систем… Системное программирование — это разработка программного обеспечения, отвечающего за взаимодействие с аппаратной частью компьютера и операционной системой. Такое ПО создаёт фундамент, на котором… Кавычки, точки, запятые, скобки и прочие знаки препинания. Ключевое слово Значение -------------------------- abstract Зарезервировано для будущих версий языка become Зарезервировано для будущих версий языка box Зарезервировано для будущих версий языка do… Типизация, набор правил определения типа данных значений языка. Циклы в Rust — это конструкции, предназначенные для многократного выполнения блока кода до тех пор, пока выполняется определённое условие или не исчерпан набор данных. В отличие от многих других… Объектно-ориентированное программирование (ООП) представляет собой подход к организации кода, при котором данные и поведение объединяются в структуры, называемые объектами. Эти объекты моделируют…История языка Rust
Что требуется знать перед началом изучения языка программирования Rust
Рекомендации по разработке на Rust
Rust для начинающих
Основы языка Rust
Экосистема приложений на Rust
Системное программирование на Rust
Синтаксис и пунктуация в Rust
Ключевые слова языка Rust
Типы данных и владение памятью
Управляющие конструкции и циклы в Rust
Объектно-ориентированные концепции в Rust